pub fn dp_rec_mc(amount: u32) -> u32 {
    let coins = [100, 50, 30, 20, 10, 5, 2, 1];

    let mut dp = vec![u32::MAX; (amount + 1) as usize];
    dp[0] = 0;
  
    for i in 1..=amount as usize {
      for &coin in &coins {
        if i >= coin as usize {
          dp[i] = dp[i].min(dp[i - coin as usize] + 1);
        }
      }
    }
  
    dp[amount as usize]
}
